
\documentclass{article}
\usepackage{geometry}	% 页面大小
\usepackage{fancyhdr}	% 页眉
\usepackage{indentfirst}	% 首行缩进
\usepackage[colorlinks,linkcolor=blue]{hyperref}	% 超链接
\usepackage{color}		% 字体颜色
\usepackage{xeCJK}
\usepackage{CJKfntef}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}	% 插入图片
\setCJKmainfont{SimSun}
\geometry{a4paper,scale=0.8}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
\begin{document}
%---------------封面-----------------%
\begin{titlepage}
\begin{center}
\includegraphics[width=0.3\textwidth]{./logo}\\[1cm]    
\textsc{\LARGE LanZhou University of Technology}\\[3cm]
\HRule \\[0.4cm]
{ \huge \bfseries LAMMPS简明笔记}\\[0.4cm]
\HRule \\[1.5cm]

% Author and supervisor
\begin{minipage}{0.4\textwidth}
\begin{flushleft} \large
\emph{Author:}
杨晟泽
\end{flushleft}
\end{minipage}
\begin{minipage}{0.4\textwidth}
\begin{flushright} \large
\emph{Supervisor:} 
None
\end{flushright}
\end{minipage}
\vfill
{\large \today}
\end{center}
\end{titlepage}
%--------------摘要、目录------------------#
\pagestyle{fancy}
\rhead{}

\begin{center}
\large 前言
\end{center}
\large 
\ \ \ \ 本着减少折腾、多做实事、少说废话的原则，我们写下了这篇简短的笔记，目的在于缩短大家在LAMMPS编程上浪费的时间好腾出空来安心搞科研。而且鉴于本人水平实在有限，希望大家能一起加入到开发这篇笔记（文档）中，注意点如下：\\
\leftline{1.手册随时更新，不保证时效性。\\} 
\leftline{2.如遇到本文档不能解决的问题，请参考官网文档。\\} 
\leftline{3.本文档仅供参考。}
\begin{center}
\large 相关
\end{center}
\leftline{1.本手册由LateX脚本语言编写\\} 
\leftline{2.目前为止，参与本手册编写人员名单：杨晟泽\\} 
\leftline{3.本手册起始编写时间：2020年1月20日\\}
\leftline{3.本手册版本号：200120\\}
\newpage
\setcounter{tocdepth}{3}
\tableofcontents
\newpage

%-------------正文-----------------------%
%-------------Part1（使用LAMMPS前你需要知道的基本概念）---------------------------%
\part{使用LAMMPS前你需要知道的基本概念}
\setcounter{section}{0}
\section{LAMMPS是什么}
\setlength{\parindent}{2em}
LAMMPS （"Large-scale Atomic/Molecular Massively Parallel Simulator"，大尺度原子/分子并行模拟工具）是由桑迪亚国家实验室开发的一套分子动力学模拟的开源程序包。 LAMMPS使用MPI实现多机器并行计算，在新的版本中，支持基于CUDA和OpenCL的GPU计算。其以GNU通用公共许可证发布，因而开源自由。 \ --以上来自维基百科
\noindent
\section{盒模型和边界条件}
\setlength{\parindent}{2em}.
LAMMPS的所有模拟都是基于盒模型的，想象一下，拿一个纸箱（或者快递盒，什么都可以），你把所有你要模拟的原子装进去，然后把盒子密封，LAMMPS所谓的盒模型就是这个意思。 \par
\begin{figure}[ht]		% 插入图片
\centering
\includegraphics[scale=0.5]{box.png}
\caption{盒模型的示意图(图中黑线为盒子)}
\label{fig:pathdemo}
\end{figure}
然后你可能会问：“直接模拟不就完了？为什么还要搞一个盒子多此一举？”这个就涉及到你计算机的计算能力的问题了，我们假设我们模拟一滴水，我们可以知道，一滴水里有6.02x10$^{23}$ 个分子，至于原子数目，还得再乘个3，这么多的原子是什么概念呢，要知道，目前为止我们模拟的最高量级的原子数目是千万级别，对小小的一滴水里的所有原子进行模拟，臣妾做不到啊，所以我们只能模拟那么大的量级，有个东西叫尺寸效应，我们模拟的东西太过小了，得出来的结果将毫无意义，为了解决这个问题，就需要{\color{red}周期性边界条件}（边界条件中的一种），周期性边界条件可以让你的模型尽可能接近真实。当然，至于什么是周期性边界条件限于篇幅这边不讲，有一个链接讲的非常好：\href{https://zhuanlan.zhihu.com/p/52107451}{点击这里}。  \par
当然，除了周期性边界条件，还有其他的边界条件，例如：自由边界条件、收缩边界条件，LAMMPS官方文档有详细讲解：\href{https://lammps.sandia.gov/doc/boundary.html}{点击这里}。
\noindent
\section{系综}
\setlength{\parindent}{2em}
在统计物理中，系综（英语：ensemble）代表一定条件下一个体系的大量可能状态的集合。--以上来自维基百科。\par
如果通俗的理解的话，系综可以理解为你在模拟中，你的盒子模型的性质，例如：等温等压、等温等体积....我们以NVT（等温等体积）系综举例，也就是说，在这个系综下，你的盒子模型内，体积和温度是保持一定的，当然，假设我设置恒温300K，那这个温度可能还是会在300K周围很小的范围波动，这原因是因为它保持温度的方法是：热浴法（即，盒子外面是一个恒温的空间，盒子里通过热传递，达到和盒子外面一样的温度，但是这需要时间，所以下一步驰豫就是为了达成这样的目的.），再假设我们这个盒子模型内温度突然升高了，它势必会导致盒子内的压力飙升，压力飙升的结果是盒子的体积会变大以使压力得到缓解、降低，而我们的NVT系综不会这样干，因为它是等体积的，就是说压力再高也不会影响它的体积。\par
在我们LAMMPS里，主要用到这三个系综：NVT、NPT、NVE。\par
其中，N代表原子数目不变、V代表体积不变、P代表压力不变、T代表温度不变、E代表总能量不变。\\
下面说一下设置系综的代码（初学者可以跳过）：\par
{\color{red}NVE}：fix \ fixID \ 作用区域ID \ nve \par
{\color{red}NVT}: fix \ fixID \ 作用区域ID \ nvt \ temp \ 初始温度 \ 结束温度 \ 耦合强度 \\
注：耦合强度类似于热传导速率（如有错误请纠正）\\
以下代码等同于NVT: \\
	fix \ nve  \ +  \ fix \ temp/berendsen   \ --等效，是个弱耦合的控温方法\\
	fix \ nve  \  + \ fix \ langevin        \ --等效，但是使用布朗动力学进行模拟\\
	fix \ nve \  +  \ fix \ temp/rescale  \ --等效 ,  有一些不严格\par
{\color{red}NPT}:同NVT \\
以下代码等同于NPT：\\
	fix \ nvt \ + \ fix \ press/berendsen \par
然而，这里讲述的还是太过简洁了，这里给出链接，需要的可以点击以下：\href{http://muchong.com/t-10349782-1}{点击这里}
\noindent
\section{驰豫}
\setlength{\parindent}{2em}
接着上面讲的系综，我们知道，温度是能量的宏观体现之一，而我们的系综对于控温的做法是热浴法，热浴不可能立即做到，它需要时间；同时，我们创造的模型，并不是一创造下来就符合能量最小化原则，我们需要给它一些时间让他自己达到能量最小化，这个过程就叫“驰豫”，或者你也可以称之为“平衡”。下图是驰豫过程中温度、压力的变化：\par
\begin{figure}[ht]		% 插入图片
\centering
\includegraphics[scale=0.5]{T.png}
\includegraphics[scale=0.5]{P.png}
\caption{驰豫期间的压力和温度}
\label{fig:pathdemo}
\end{figure}
当然，如果模型过小，那么温度和压力是及其不稳定的，因为温度和压力都是宏观量，所以模型一定要稍微大一点，不要太小。
\noindent
\section{步长}
\setlength{\parindent}{2em}
4.由于我们的实验（比如说拉伸实验），是随着时间的发展而变化的动态过程，在LAMMPS里（units metal），长度是以A（埃）为单位的，时间单位是皮秒,下面介绍上述所涉及的步长、时间步长：\par
步长:1个步长内，计算机把盒子模型里面的所有原子都计算一遍。\par
时间步长:假如时间步长是1，那么计算机每隔1皮秒就计算所有的原子一次，0.001就是每隔1飞秒计算所有原子一次，时间步长越小计算的越精密，但是势必会极大的耗费计算资源。
\noindent
\section{势函数}
\setlength{\parindent}{2em}
势函数的构造是人工势场方法中的关键问题。势函数其值为物理上向量势或是标量势的数学函数，又称调和函数，是数学上位势论的研究主题，同时在平摊分析（amortized analysis）的势能法中，用来描述过去资源的投入可在后来操作中使用程度的函数。 \ --来自百度百科 \par
我们可以通俗的理解为原子之间相互作用的规则。\par
常用的势函数类型：EAM（嵌入式原子势）、MEAM(修正嵌入式原子势)、Morse势、Lennard-Jones势。\\
注：MEAM和EAM的区别详见：\href{https://wenku.baidu.com/view/380856de02d276a200292e9f.html}{点击这里} \\
选取、下载势函数文件可以访问以下链接：\href{https://www.ctcms.nist.gov/potentials}{点击这里} \ --此链接由樊礼赫提供 \\
\noindent
\section{临近表技术}
\setlength{\parindent}{2em}
这是一个用来节省计算机资源的技术，下面提供介绍图和链接： \par
\begin{figure}[ht]		% 插入图片
\centering
\includegraphics[scale=0.4]{neighbor.png}
\caption{邻近表技术详细介绍}
\label{fig:pathdemo}
\end{figure}
注：此图由邵自豪提供。 \\
邻近表技术详细说明链接：\href{https://zhuanlan.zhihu.com/p/64488989}{点击这里}
\noindent
\section{能势能最小化}
\setlength{\parindent}{2em}
首先指出，势能最小化对应的命令是 minimize； \par
我们再创造模型的时候，如上面所知，每个原子的动能不是均匀的，同样的，势能也不是均匀的，也有一些极高值（不稳定值，我是这么理解的），所以需要势能最小化，减小它的不稳定因素。\par
势能最小化和驰豫有什么区别？首先明确一个概念，它和温度无关，而驰豫是让温度、势能达到一个稳定值，如其名minimize（这是命令），它是降低势能的，让整个体系的熵增加的。如果还不懂\\
这里有一个网址可供参考：\href{http://www.mdbbs.org/thread-19850-1-1.html}{点击这里}
\noindent
\section{后续待补充....}
%-------------------------LAMMPS已知BUG---------------------
\part{LAMMPS已知BUG说明}
\setcounter{section}{0}
\section{Gama-TiAl驰豫自发出现层错的BUG}
\setlength{\parindent}{2em}
BUG：如果你的盒子模型内包含原点，并且你的材料是Gama-TiAl，那你在驰豫的过程中可能会自发出现层错 \par
解决办法：避免原点在盒子里。\\
BUG代码： region \ 1 \ -10 \ 10 \ -10 \ 10 \ -10 \ 10 \ units \ box  \\
解决代码：region \ 1 \ 0 \ 20 \ 0 \ 20 \ 0 \ 20 \ units \ box  \\
\noindent
\section{周期边界条件下报错原子丢失的BUG（拉伸）}
\setlength{\parindent}{2em}
BUG:如果时间步长和拉伸变形速率“不匹配”，会出现原子丢失的情况。\par
解决办法：尽量把拉伸速率调低\\
BUG代码:timestep \ \ \ 0.001 \ ; \ fix \ 1 \ all \ deform \ 1 \ x \ erate \ 0.005 \ units \ box \ remap \ x   \\
解决代码：timestep \ \ \ 0.001 \ ; \ fix \ 1 \ all \ deform \ 1 \ x \ erate \ 0.001 \ units \ box \ remap \ x   
\noindent
\section{待发现.....}
%-------------------------常用命令-----------------------------
\part{常用命令介绍}
\section{用来初始化的简单命令}
	\subsection{echo命令}
	\subsection{units命令}
	\subsection{dimension命令}



\end{document}